Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix attributes count #16

Open
wants to merge 2 commits into
base: GL-version
Choose a base branch
from

Conversation

michaliskambi
Copy link

( Note: This branch is done on top of #14 . Once you apply #14 , this PR will contain only 1 commit. )

The TOpenGLView.defaultPixelFormat declares local array

attributes: array[0..4] of NSOpenGLPixelFormatAttribute;

but this size is too small. The code inside the TOpenGLView.defaultPixelFormat wants this list to have at least size of 10, looking at various lines attributes[Inc(i)] := .... It currently crashes, as even the default execution needs more size than 5.

I looked at fork from @genericptr and followed the solution from there ( https://github.com/genericptr/GLPT/blob/16dcec0a632dfeed0bcb0b07938a0a2fc16490be/include/GLPT_Cocoa.inc#L654 ):

attributes: array[0..32] of NSOpenGLPixelFormatAttribute;

This means size 33, safely more than we need.

Note: I found this error while testing Cocoa integration code. I tested it by running GLPT examples, and also because I was basing Cocoa backend of TCastleWindow in Castle Game Engine on GLPT code. See https://castle-engine.io/wp/2022/05/29/huge-improvements-for-macos-users-macos-binary-beta-release-cocoa-backend-for-tcastlewindow-automatic-running-and-packing-using-appbundle-access-to-macos-thanks-to-macstadium/ and https://github.com/castle-engine/castle-engine/blob/master/src/window/castlewindow_cocoa.inc about Cocoa+Castle Game Engine. Thank you very much for creating GLPT, I appreciate greatly that I could use a lot of GLPT code to have a ready solution in CGE.

administrator and others added 2 commits May 17, 2022 00:22
Since FPC 3.2.0, one has to use `ObjCBool` instead of `Boolean`, otherwise GLPT compilation fails at various overrides because the methods are declared in ancestor with `ObjCBool` (not compatible with Pascal `Boolean`).

E.g. in latest FPC, `packages/cocoaint/src/appkit/NSWindow.inc` defines

```
function initWithContentRect_styleMask_backing_defer (contentRect: NSRect; aStyle: NSUInteger; bufferingType: NSBackingStoreType; flag: ObjCBOOL): instancetype; message 'initWithContentRect:styleMask:backing:defer:';
```

In GLPT, this should be overridden with `flag: ObjCBool`, not `flag: Boolean`.

See https://fpcwiki.coderetro.net/User_Changes_3.2.0#objcbase .
Current count (5) is too small to fit various possible values we want
to put on that list.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant